// 防抖动是将多次执行变为最后一次执行

// func是用户传入需要防抖的函数
// wait是等待时间
const debounce = (func, wait = 50) => {
  // 缓存一个定时器id
  let timer = 0;
  // 这里返回的函数是每次用户实际调用的防抖函数
  // 如果已经设定过定时器了就清空上一次的定时器
  // 开始一个新的定时器，延迟执行用户传入的方法
  return function (...args) {
    if (timer) clearTimeout(timer);
    console.log(args, "12312");
    timer = setTimeout(() => {
      func.apply(this, args); // 用apply，为了让func的上下文保持与setTimeout统一，传入args是为了其他的拓展
    }, wait);
  };
};

debounce(() => {
  console.log('调用成功');
}, 123)();

